
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.io.File;



public class Puissance4Debut extends JFrame {

	private Grille grille;
	private JLabel[][] lesCases;
	private JButton[] lesBoutons;
	private ImageIcon caseVide;
	private ImageIcon caseJ1;
	private ImageIcon caseJ2;

	class P4ListenerDebut implements ActionListener
	{
		private int col;
		
		public P4ListenerDebut(int col)
		{
			this.col = col;
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			if(grille.peutDeposerPion(col))
			{
				lesCases[Grille.NB_LIG-1-grille.deposerPion(col, Grille.HUMAIN)][col].setIcon(caseJ1);
				
				if(!grille.peutDeposerPion(col)) lesBoutons[col].setEnabled(false);
				
				int colOrdi = grille.meilleurCoupPourOrdinateur();
				lesCases[Grille.NB_LIG-1-grille.deposerPion(colOrdi, Grille.ORDI)][colOrdi].setIcon(caseJ2);
				
				if(grille.gagnant() == Grille.HUMAIN)
				{
					JOptionPane.showMessageDialog(Puissance4Debut.this, "Bravo ! Vous avez gagnez !", "Partie terminée", JOptionPane.INFORMATION_MESSAGE);
					nouvellePartie();
				}
				else if(grille.gagnant() == Grille.ORDI)
				{
					JOptionPane.showMessageDialog(Puissance4Debut.this, "Bravo ! Vous avez perdu !", "Partie terminée", JOptionPane.INFORMATION_MESSAGE);
					nouvellePartie();
				}
				else if(grille.pleine() == true)
				{
					JOptionPane.showMessageDialog(Puissance4Debut.this, "Bravo ! Il y a match null !", "Partie terminée", JOptionPane.INFORMATION_MESSAGE);
					nouvellePartie();
				}
			}
		}
		
	}

	public Puissance4Debut() {
		super("Puissance 4");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		this.grille = new Grille();
		this.caseJ1 = new ImageIcon("images"+File.separator+"rouge.jpg");
		this.caseJ2 = new ImageIcon("images"+File.separator+"jaune.jpg");
		this.caseVide = new ImageIcon("images"+File.separator+"vide.jpg");

		Container principal = this.getContentPane();
		principal.setLayout(new GridLayout(Grille.NB_LIG+1,Grille.NB_COL));
		lesBoutons = new JButton[Grille.NB_COL];
		lesCases = new JLabel[Grille.NB_LIG][Grille.NB_COL];
		for (int col=0; col<Grille.NB_COL; col++) {
			lesBoutons[col] = new JButton(new ImageIcon("images"+File.separator+"blanc.jpg"));
			lesBoutons[col].setRolloverIcon(new ImageIcon("images"+File.separator+"drop.jpg"));
			lesBoutons[col].setDisabledIcon(new ImageIcon("images"+File.separator+"blanc.jpg"));
			lesBoutons[col].setBorder(null);

			lesBoutons[col].addActionListener(new P4ListenerDebut(col)); 

			principal.add(lesBoutons[col]);
		}
		for (int lig=0; lig<Grille.NB_LIG; lig++) {
			for (int col=0; col<Grille.NB_COL; col++) {
				lesCases[lig][col] = new JLabel(caseVide);
				principal.add(lesCases[lig][col]);
			}
		}
		pack();
		this.setSize(new Dimension((int)(this.getSize().getWidth()-Grille.NB_COL),(int)(this.getSize().getHeight()-Grille.NB_LIG)));
		this.setResizable(false);
	}
	
	private void nouvellePartie()
	{
		grille = new Grille();
		
		for (int col=0; col<Grille.NB_COL; col++)
		{
			lesBoutons[col].setEnabled(true);
			
			for (int lig=0; lig<Grille.NB_LIG; lig++) lesCases[lig][col].setIcon(caseVide);
		}
	}
	
	public static void main(String[] args) {
		Puissance4Debut fen = new Puissance4Debut();
		fen.setVisible(true);
	}
}

